package com.study.aspect;

import com.study.Log;
import com.study.entity.User;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * @Author chenyeqing
 * @Date 2021/10/3 14:18
 */
public class UserServiceImpl implements UserService, ApplicationContextAware {
    private ApplicationContext ctx;
    @Log
    @Override
    public void register(User user) {
        System.out.printf("注册成功,账号信息为：%s\n", user);
        // throw new RuntimeException("一个异常");


        // 调用的是原始对象（this）的login方法 --> 只有核心功能
        /**
         * 设计目的：代理对象的login方法 --> 额外功能 + 核心功能
         * ApplicationContext ctx = new ClassPathXmlApplicationContext();
         * Spring工厂是个重量级资源，一个应用中，应该只创建一个工厂
         */
        // this.login("a", "b");

        UserService userService = (UserService) ctx.getBean("userService");
        userService.login("a", "b");


    }

    @Override
    public boolean login(String name, String password) {
        System.out.printf("登录成功，账号为：%s，密码为：%s\n", name, password);
        return true;
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ctx = applicationContext;
    }
}
